﻿2026-08-01T18:02:53.4583040Z Current runner version: '2.336.0'
2026-08-01T18:02:53.4614876Z ##[group]Runner Image Provisioner
2026-08-01T18:02:53.4616206Z Hosted Compute Agent
2026-08-01T18:02:53.4617030Z Version: 20260707.563
2026-08-01T18:02:53.4617877Z Commit: 02667638d2b423fbc733a8e32a88b44996a3ba6e
2026-08-01T18:02:53.4618943Z Build Date: 2026-07-07T19:33:50Z
2026-08-01T18:02:53.4619878Z Worker ID: {203446f7-ff9d-4cae-8322-1e6f62ba28c6}
2026-08-01T18:02:53.4620927Z Azure Region: westus3
2026-08-01T18:02:53.4621711Z ##[endgroup]
2026-08-01T18:02:53.4624564Z ##[group]Operating System
2026-08-01T18:02:53.4625532Z Ubuntu
2026-08-01T18:02:53.4626223Z 24.04.4
2026-08-01T18:02:53.4626898Z LTS
2026-08-01T18:02:53.4627739Z ##[endgroup]
2026-08-01T18:02:53.4628589Z ##[group]Runner Image
2026-08-01T18:02:53.4629431Z Image: ubuntu-24.04
2026-08-01T18:02:53.4630240Z Version: 20260720.247.2
2026-08-01T18:02:53.4632106Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260720.247/images/ubuntu/Ubuntu2404-Readme.md
2026-08-01T18:02:53.4634426Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260720.247
2026-08-01T18:02:53.4635803Z ##[endgroup]
2026-08-01T18:02:53.4637343Z ##[group]GITHUB_TOKEN Permissions
2026-08-01T18:02:53.4640125Z Contents: read
2026-08-01T18:02:53.4640914Z Metadata: read
2026-08-01T18:02:53.4641639Z ##[endgroup]
2026-08-01T18:02:53.4644739Z Secret source: Actions
2026-08-01T18:02:53.4646175Z Prepare workflow directory
2026-08-01T18:02:53.6457848Z Prepare all required actions
2026-08-01T18:02:53.6606495Z Getting action download info
2026-08-01T18:02:54.0068472Z Download action repository 'actions/checkout@v4' (SHA:11d5960a326750d5838078e36cf38b85af677262)
2026-08-01T18:02:55.6682261Z Download action repository 'actions/setup-python@v5' (SHA:a26af69be951a213d495a4c3e4e4022e16d87065)
2026-08-01T18:02:56.5313545Z Complete job name: Backend – 667 tests (single run)
2026-08-01T18:02:56.5930950Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:02:56.5938529Z ##[group]Run actions/checkout@v4
2026-08-01T18:02:56.5939120Z with:
2026-08-01T18:02:56.5939461Z   fetch-depth: 0
2026-08-01T18:02:56.5939819Z   repository: Gamexgit/FinanceManager
2026-08-01T18:02:56.5942680Z   token: ***
2026-08-01T18:02:56.5943042Z   ssh-strict: true
2026-08-01T18:02:56.5943400Z   ssh-user: git
2026-08-01T18:02:56.5943768Z   persist-credentials: true
2026-08-01T18:02:56.5944294Z   clean: true
2026-08-01T18:02:56.5944716Z   sparse-checkout-cone-mode: true
2026-08-01T18:02:56.5945111Z   fetch-tags: false
2026-08-01T18:02:56.5945468Z   show-progress: true
2026-08-01T18:02:56.5945856Z   lfs: false
2026-08-01T18:02:56.5946274Z   submodules: false
2026-08-01T18:02:56.5946668Z   set-safe-directory: true
2026-08-01T18:02:56.5947047Z   allow-unsafe-pr-checkout: false
2026-08-01T18:02:56.5947624Z env:
2026-08-01T18:02:56.5947957Z   PYTHONPATH: src
2026-08-01T18:02:56.5948304Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:02:56.5948825Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-01T18:02:56.5949428Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-01T18:02:56.5949912Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:02:56.5950315Z ##[endgroup]
2026-08-01T18:02:56.7028741Z Syncing repository: Gamexgit/FinanceManager
2026-08-01T18:02:56.7030967Z ##[group]Getting Git version info
2026-08-01T18:02:56.7031828Z Working directory is '/home/runner/work/FinanceManager/FinanceManager'
2026-08-01T18:02:56.7034779Z [command]/usr/bin/git version
2026-08-01T18:02:56.7476089Z git version 2.54.0
2026-08-01T18:02:56.7479794Z ##[endgroup]
2026-08-01T18:02:56.7487729Z Temporarily overriding HOME='/home/runner/work/_temp/64dd3cce-4345-4edf-bb95-f906bb00421b' before making global git config changes
2026-08-01T18:02:56.7489737Z Adding repository directory to the temporary git global config as a safe directory
2026-08-01T18:02:56.7491361Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:02:56.8215319Z Deleting the contents of '/home/runner/work/FinanceManager/FinanceManager'
2026-08-01T18:02:56.8223852Z ##[group]Initializing the repository
2026-08-01T18:02:56.8229052Z [command]/usr/bin/git init /home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:02:57.2612578Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-08-01T18:02:57.2613625Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-08-01T18:02:57.2614877Z hint: to use in all of your new repositories, which will suppress this warning,
2026-08-01T18:02:57.2615336Z hint: call:
2026-08-01T18:02:57.2615736Z hint:
2026-08-01T18:02:57.2616126Z hint: 	git config --global init.defaultBranch <name>
2026-08-01T18:02:57.2616535Z hint:
2026-08-01T18:02:57.2616949Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-08-01T18:02:57.2617547Z hint: 'development'. The just-created branch can be renamed via this command:
2026-08-01T18:02:57.2618041Z hint:
2026-08-01T18:02:57.2618339Z hint: 	git branch -m <name>
2026-08-01T18:02:57.2618639Z hint:
2026-08-01T18:02:57.2619088Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-08-01T18:02:57.2619732Z Initialized empty Git repository in /home/runner/work/FinanceManager/FinanceManager/.git/
2026-08-01T18:02:57.2621402Z [command]/usr/bin/git remote add origin https://github.com/Gamexgit/FinanceManager
2026-08-01T18:02:57.3693122Z ##[endgroup]
2026-08-01T18:02:57.3694077Z ##[group]Disabling automatic garbage collection
2026-08-01T18:02:57.3695137Z [command]/usr/bin/git config --local gc.auto 0
2026-08-01T18:02:57.5947786Z ##[endgroup]
2026-08-01T18:02:57.5948623Z ##[group]Setting up auth
2026-08-01T18:02:57.5949726Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-01T18:02:57.5953213Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-01T18:02:57.7610277Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-01T18:02:57.7612808Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-01T18:02:57.7615422Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-01T18:02:57.7617788Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-01T18:02:57.7619695Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-08-01T18:02:57.7621572Z ##[endgroup]
2026-08-01T18:02:57.7622363Z ##[group]Fetching the repository
2026-08-01T18:02:57.7623574Z [command]/usr/bin/git -c protocol.version=2 fetch --prune --no-recurse-submodules origin +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/* +465728a905508db6e81667eceb73c74097e49722:refs/remotes/pull/32/merge
2026-08-01T18:02:59.2681156Z From https://github.com/Gamexgit/FinanceManager
2026-08-01T18:02:59.2682955Z  * [new branch]      Sprint14/twr-xirr-performance-attribution -> origin/Sprint14/twr-xirr-performance-attribution
2026-08-01T18:02:59.2685082Z  * [new branch]      Sprint15/household-import-transfer-reconciliation-v1 -> origin/Sprint15/household-import-transfer-reconciliation-v1
2026-08-01T18:02:59.2687144Z  * [new branch]      Sprint16/hotfix-openpyxl-runtime-dependency -> origin/Sprint16/hotfix-openpyxl-runtime-dependency
2026-08-01T18:02:59.2689037Z  * [new branch]      Sprint16/smart-household-inbox-real-data-onboarding-v2 -> origin/Sprint16/smart-household-inbox-real-data-onboarding-v2
2026-08-01T18:02:59.2691041Z  * [new branch]      feat/budget-analytics-data-explorer-v1   -> origin/feat/budget-analytics-data-explorer-v1
2026-08-01T18:02:59.2692477Z  * [new branch]      feat/budget-categories-duplicates-cleanup -> origin/feat/budget-categories-duplicates-cleanup
2026-08-01T18:02:59.2693879Z  * [new branch]      feat/budget-categories-ux-fix            -> origin/feat/budget-categories-ux-fix
2026-08-01T18:02:59.2695597Z  * [new branch]      feat/budget-import-production-v2         -> origin/feat/budget-import-production-v2
2026-08-01T18:02:59.2696971Z  * [new branch]      feat/budget-monthly-import-rule-learning-v1 -> origin/feat/budget-monthly-import-rule-learning-v1
2026-08-01T18:02:59.2698381Z  * [new branch]      feat/budget-phase-1-4                    -> origin/feat/budget-phase-1-4
2026-08-01T18:02:59.2699548Z  * [new branch]      feat/budget-planning-forecast-v1         -> origin/feat/budget-planning-forecast-v1
2026-08-01T18:02:59.2700823Z  * [new branch]      feat/budget-planning-usability-v2        -> origin/feat/budget-planning-usability-v2
2026-08-01T18:02:59.2702118Z  * [new branch]      feat/budget-review-bulk-assign-confirm   -> origin/feat/budget-review-bulk-assign-confirm
2026-08-01T18:02:59.2703352Z  * [new branch]      feat/budget-workflow-help-ux             -> origin/feat/budget-workflow-help-ux
2026-08-01T18:02:59.2705158Z  * [new branch]      feat/finance-command-center-monthly-close-v1 -> origin/feat/finance-command-center-monthly-close-v1
2026-08-01T18:02:59.2706624Z  * [new branch]      feat/fixed-costs-subscriptions-v1        -> origin/feat/fixed-costs-subscriptions-v1
2026-08-01T18:02:59.2707904Z  * [new branch]      feat/grocery-matching-review-learning-v2 -> origin/feat/grocery-matching-review-learning-v2
2026-08-01T18:02:59.2709546Z  * [new branch]      feat/grocery-product-price-providers-v1  -> origin/feat/grocery-product-price-providers-v1
2026-08-01T18:02:59.2711065Z  * [new branch]      feat/migros-product-savings-grocery-optimizer-v1 -> origin/feat/migros-product-savings-grocery-optimizer-v1
2026-08-01T18:02:59.2712627Z  * [new branch]      feat/mobile-nav-income-csv-final         -> origin/feat/mobile-nav-income-csv-final
2026-08-01T18:02:59.2713918Z  * [new branch]      feat/mobile-nav-income-hotfix-v2         -> origin/feat/mobile-nav-income-hotfix-v2
2026-08-01T18:02:59.2715404Z  * [new branch]      feat/mobile-nav-income-planning-v1       -> origin/feat/mobile-nav-income-planning-v1
2026-08-01T18:02:59.2716734Z  * [new branch]      fix/manual-entry-uat-flows               -> origin/fix/manual-entry-uat-flows
2026-08-01T18:02:59.2717823Z  * [new branch]      fix/sprint16.2-insurance-family-order    -> origin/fix/sprint16.2-insurance-family-order
2026-08-01T18:02:59.2719303Z  * [new branch]      hotfix/sprint13-global-portfolio-aggregation -> origin/hotfix/sprint13-global-portfolio-aggregation
2026-08-01T18:02:59.2720620Z  * [new branch]      hotfix/sprint8-kpi-overflow              -> origin/hotfix/sprint8-kpi-overflow
2026-08-01T18:02:59.2721861Z  * [new branch]      hotfix/sprint8-readonly-render           -> origin/hotfix/sprint8-readonly-render
2026-08-01T18:02:59.2723160Z  * [new branch]      integration/portfolio-phase3-to-main     -> origin/integration/portfolio-phase3-to-main
2026-08-01T18:02:59.2725134Z  * [new branch]      main                                     -> origin/main
2026-08-01T18:02:59.2726508Z  * [new branch]      sprint10/portfolio-go-live               -> origin/sprint10/portfolio-go-live
2026-08-01T18:02:59.2727779Z  * [new branch]      sprint11/portfolio-completeness-ux       -> origin/sprint11/portfolio-completeness-ux
2026-08-01T18:02:59.2729128Z  * [new branch]      sprint12/truewealth-verified-import      -> origin/sprint12/truewealth-verified-import
2026-08-01T18:02:59.2730663Z  * [new branch]      sprint13/postfinance-ledger-import       -> origin/sprint13/postfinance-ledger-import
2026-08-01T18:02:59.2732294Z  * [new branch]      sprint16.1/classification-coverage-import-readiness -> origin/sprint16.1/classification-coverage-import-readiness
2026-08-01T18:02:59.2734597Z  * [new branch]      sprint16.2/first-import-calibration-portal-flow -> origin/sprint16.2/first-import-calibration-portal-flow
2026-08-01T18:02:59.2736428Z  * [new branch]      sprint16.3/import-readiness-batched-decisions-performance -> origin/sprint16.3/import-readiness-batched-decisions-performance
2026-08-01T18:02:59.2738173Z  * [new branch]      sprint17a/data-truth                     -> origin/sprint17a/data-truth
2026-08-01T18:02:59.2739476Z  * [new branch]      sprint17b/equity-quote-refresh           -> origin/sprint17b/equity-quote-refresh
2026-08-01T18:02:59.2740698Z  * [new branch]      sprint17b/household-cockpit              -> origin/sprint17b/household-cockpit
2026-08-01T18:02:59.2742079Z  * [new branch]      sprint17c/data-truth-navigation-today-lite -> origin/sprint17c/data-truth-navigation-today-lite
2026-08-01T18:02:59.2743511Z  * [new branch]      sprint17e/household-year-forecast-v1     -> origin/sprint17e/household-year-forecast-v1
2026-08-01T18:02:59.2745013Z  * [new branch]      sprint2/navigation-design-shell          -> origin/sprint2/navigation-design-shell
2026-08-01T18:02:59.2746420Z  * [new branch]      sprint3.1/reconciliation-semantic-hardening -> origin/sprint3.1/reconciliation-semantic-hardening
2026-08-01T18:02:59.2748050Z  * [new branch]      sprint3/reconciliation-snapshot-foundation -> origin/sprint3/reconciliation-snapshot-foundation
2026-08-01T18:02:59.2749610Z  * [new branch]      sprint4.1/portfolio-policy-contract-hardening -> origin/sprint4.1/portfolio-policy-contract-hardening
2026-08-01T18:02:59.2751067Z  * [new branch]      sprint4/portfolio-policy-foundation      -> origin/sprint4/portfolio-policy-foundation
2026-08-01T18:02:59.2752673Z  * [new branch]      sprint5/portfolio-performance-foundation -> origin/sprint5/portfolio-performance-foundation
2026-08-01T18:02:59.2754625Z  * [new branch]      sprint6/portfolio-data-ingestion-reconciliation -> origin/sprint6/portfolio-data-ingestion-reconciliation
2026-08-01T18:02:59.2756267Z  * [new branch]      sprint7/postfinance-portfolio-source     -> origin/sprint7/postfinance-portfolio-source
2026-08-01T18:02:59.2757862Z  * [new branch]      sprint8/market-fx-benchmark-risk         -> origin/sprint8/market-fx-benchmark-risk
2026-08-01T18:02:59.2759191Z  * [new branch]      sprint9/portfolio-basis-policy           -> origin/sprint9/portfolio-basis-policy
2026-08-01T18:02:59.2760273Z  * [new tag]         v0.3.0                                   -> v0.3.0
2026-08-01T18:02:59.2761233Z  * [new tag]         v0.3.1                                   -> v0.3.1
2026-08-01T18:02:59.2762071Z  * [new tag]         v0.3.2                                   -> v0.3.2
2026-08-01T18:02:59.2763017Z  * [new ref]         465728a905508db6e81667eceb73c74097e49722 -> pull/32/merge
2026-08-01T18:02:59.2821609Z ##[endgroup]
2026-08-01T18:02:59.2822919Z ##[group]Determining the checkout info
2026-08-01T18:02:59.2823877Z ##[endgroup]
2026-08-01T18:02:59.2825138Z [command]/usr/bin/git sparse-checkout disable
2026-08-01T18:02:59.2878934Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-08-01T18:02:59.2905985Z ##[group]Checking out the ref
2026-08-01T18:02:59.2909590Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/32/merge
2026-08-01T18:02:59.3337387Z Note: switching to 'refs/remotes/pull/32/merge'.
2026-08-01T18:02:59.3338235Z 
2026-08-01T18:02:59.3338759Z You are in 'detached HEAD' state. You can look around, make experimental
2026-08-01T18:02:59.3339768Z changes and commit them, and you can discard any commits you make in this
2026-08-01T18:02:59.3340776Z state without impacting any branches by switching back to a branch.
2026-08-01T18:02:59.3341442Z 
2026-08-01T18:02:59.3341894Z If you want to create a new branch to retain commits you create, you may
2026-08-01T18:02:59.3342874Z do so (now or later) by using -c with the switch command. Example:
2026-08-01T18:02:59.3351332Z 
2026-08-01T18:02:59.3352032Z   git switch -c <new-branch-name>
2026-08-01T18:02:59.3358751Z 
2026-08-01T18:02:59.3361375Z Or undo this operation with:
2026-08-01T18:02:59.3361901Z 
2026-08-01T18:02:59.3362331Z   git switch -
2026-08-01T18:02:59.3362712Z 
2026-08-01T18:02:59.3363263Z Turn off this advice by setting config variable advice.detachedHead to false
2026-08-01T18:02:59.3363875Z 
2026-08-01T18:02:59.3364703Z HEAD is now at 465728a Merge 075df7b91f8035b3757f206da3a83db8768e6852 into ef31adbcfb8ed7a9dd7be845113934f02f192506
2026-08-01T18:02:59.3370076Z ##[endgroup]
2026-08-01T18:02:59.3396523Z [command]/usr/bin/git log -1 --format=%H
2026-08-01T18:02:59.3414084Z 465728a905508db6e81667eceb73c74097e49722
2026-08-01T18:02:59.3658885Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:02:59.3660655Z ##[group]Run actions/setup-python@v5
2026-08-01T18:02:59.3660990Z with:
2026-08-01T18:02:59.3661327Z   python-version: 3.11
2026-08-01T18:02:59.3661645Z   cache: pip
2026-08-01T18:02:59.3662003Z   cache-dependency-path: requirements-ci.txt
2026-08-01T18:02:59.3662397Z   check-latest: false
2026-08-01T18:02:59.3664967Z   token: ***
2026-08-01T18:02:59.3665291Z   update-environment: true
2026-08-01T18:02:59.3665622Z   allow-prereleases: false
2026-08-01T18:02:59.3665952Z   freethreaded: false
2026-08-01T18:02:59.3666284Z env:
2026-08-01T18:02:59.3666561Z   PYTHONPATH: src
2026-08-01T18:02:59.3666873Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:02:59.3667441Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-01T18:02:59.3668022Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-01T18:02:59.3668497Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:02:59.3668834Z ##[endgroup]
2026-08-01T18:02:59.5066368Z ##[group]Installed versions
2026-08-01T18:02:59.5149139Z (node:1928) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-01T18:02:59.5150329Z Successfully set up CPython (3.11.15)
2026-08-01T18:02:59.5151397Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-01T18:02:59.5152642Z ##[endgroup]
2026-08-01T18:02:59.5626793Z [command]/opt/hostedtoolcache/Python/3.11.15/x64/bin/pip cache dir
2026-08-01T18:03:00.3284448Z /home/runner/.cache/pip
2026-08-01T18:03:00.5598202Z pip cache is not found
2026-08-01T18:03:00.5723032Z ##[group]Run python -m pip install -e . -r requirements-ci.txt
2026-08-01T18:03:00.5723668Z [36;1mpython -m pip install -e . -r requirements-ci.txt[0m
2026-08-01T18:03:00.5758101Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:00.5758485Z env:
2026-08-01T18:03:00.5758771Z   PYTHONPATH: src
2026-08-01T18:03:00.5759096Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:00.5759550Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-01T18:03:00.5760155Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-01T18:03:00.5760657Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:00.5761070Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:00.5761586Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:00.5762085Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:00.5762569Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:00.5763419Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:00.5763895Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:00.5764688Z ##[endgroup]
2026-08-01T18:03:01.8061976Z Obtaining file:///home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:03:01.8080462Z   Installing build dependencies: started
2026-08-01T18:03:03.4025367Z   Installing build dependencies: finished with status 'done'
2026-08-01T18:03:03.4055644Z   Checking if build backend supports build_editable: started
2026-08-01T18:03:03.7589655Z   Checking if build backend supports build_editable: finished with status 'done'
2026-08-01T18:03:03.7596888Z   Getting requirements to build editable: started
2026-08-01T18:03:04.0275882Z   Getting requirements to build editable: finished with status 'done'
2026-08-01T18:03:04.0277031Z   Preparing editable metadata (pyproject.toml): started
2026-08-01T18:03:04.1873496Z   Preparing editable metadata (pyproject.toml): finished with status 'done'
2026-08-01T18:03:04.3450066Z Collecting fastapi==0.136.1 (from -r requirements-ci.txt (line 1))
2026-08-01T18:03:04.4238673Z   Downloading fastapi-0.136.1-py3-none-any.whl.metadata (28 kB)
2026-08-01T18:03:05.0439996Z Collecting httpx==0.28.1 (from -r requirements-ci.txt (line 2))
2026-08-01T18:03:05.0546160Z   Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)
2026-08-01T18:03:05.0943219Z Collecting Jinja2==3.1.6 (from -r requirements-ci.txt (line 3))
2026-08-01T18:03:05.1048243Z   Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
2026-08-01T18:03:05.2892583Z Collecting openpyxl==3.1.5 (from -r requirements-ci.txt (line 4))
2026-08-01T18:03:05.2999465Z   Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:05.5769898Z Collecting pandas==3.0.3 (from -r requirements-ci.txt (line 5))
2026-08-01T18:03:05.5881668Z   Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (79 kB)
2026-08-01T18:03:05.6575663Z Collecting plotly==6.7.0 (from -r requirements-ci.txt (line 6))
2026-08-01T18:03:05.6682075Z   Downloading plotly-6.7.0-py3-none-any.whl.metadata (8.6 kB)
2026-08-01T18:03:05.8288857Z Collecting pydantic==2.13.4 (from -r requirements-ci.txt (line 7))
2026-08-01T18:03:05.8393159Z   Downloading pydantic-2.13.4-py3-none-any.whl.metadata (109 kB)
2026-08-01T18:03:05.8912039Z Collecting pypdf==6.14.2 (from -r requirements-ci.txt (line 8))
2026-08-01T18:03:05.9019646Z   Downloading pypdf-6.14.2-py3-none-any.whl.metadata (7.2 kB)
2026-08-01T18:03:06.0798947Z Collecting pytest==9.0.2 (from -r requirements-ci.txt (line 9))
2026-08-01T18:03:06.0922017Z   Downloading pytest-9.0.2-py3-none-any.whl.metadata (7.6 kB)
2026-08-01T18:03:06.5130945Z Collecting ruff==0.15.13 (from -r requirements-ci.txt (line 10))
2026-08-01T18:03:06.5245390Z   Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (26 kB)
2026-08-01T18:03:06.9026519Z Collecting streamlit==1.57.0 (from -r requirements-ci.txt (line 11))
2026-08-01T18:03:06.9131524Z   Downloading streamlit-1.57.0-py3-none-any.whl.metadata (9.6 kB)
2026-08-01T18:03:07.2595470Z Collecting uvicorn==0.47.0 (from -r requirements-ci.txt (line 12))
2026-08-01T18:03:07.2702446Z   Downloading uvicorn-0.47.0-py3-none-any.whl.metadata (6.7 kB)
2026-08-01T18:03:07.3280111Z Collecting xlrd==2.0.2 (from -r requirements-ci.txt (line 13))
2026-08-01T18:03:07.3387522Z   Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB)
2026-08-01T18:03:07.6265853Z Collecting yfinance==1.3.0 (from -r requirements-ci.txt (line 14))
2026-08-01T18:03:07.6374391Z   Downloading yfinance-1.3.0-py2.py3-none-any.whl.metadata (6.1 kB)
2026-08-01T18:03:07.7280678Z Collecting starlette>=0.46.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:07.7388503Z   Downloading starlette-1.3.1-py3-none-any.whl.metadata (6.4 kB)
2026-08-01T18:03:07.7618977Z Collecting typing-extensions>=4.8.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:07.7723000Z   Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)
2026-08-01T18:03:07.9337585Z Collecting typing-inspection>=0.4.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:07.9441887Z   Downloading typing_inspection-0.4.2-py3-none-any.whl.metadata (2.6 kB)
2026-08-01T18:03:07.9642189Z Collecting annotated-doc>=0.0.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:07.9754525Z   Downloading annotated_doc-0.0.5-py3-none-any.whl.metadata (6.5 kB)
2026-08-01T18:03:08.0254838Z Collecting anyio (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.0358762Z   Downloading anyio-4.14.2-py3-none-any.whl.metadata (4.6 kB)
2026-08-01T18:03:08.0618796Z Collecting certifi (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.0723046Z   Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:08.2877069Z Collecting httpcore==1.* (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.2983060Z   Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)
2026-08-01T18:03:08.3225723Z Collecting idna (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.3336865Z   Downloading idna-3.18-py3-none-any.whl.metadata (6.1 kB)
2026-08-01T18:03:08.3836460Z Collecting MarkupSafe>=2.0 (from Jinja2==3.1.6->-r requirements-ci.txt (line 3))
2026-08-01T18:03:08.3942971Z   Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
2026-08-01T18:03:08.5483336Z Collecting et-xmlfile (from openpyxl==3.1.5->-r requirements-ci.txt (line 4))
2026-08-01T18:03:08.5587432Z   Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
2026-08-01T18:03:08.9625356Z Collecting numpy>=1.26.0 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-01T18:03:08.9741918Z   Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
2026-08-01T18:03:08.9938942Z Collecting python-dateutil>=2.8.2 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-01T18:03:09.0042322Z   Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2026-08-01T18:03:09.0400433Z Collecting narwhals>=1.15.1 (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-01T18:03:09.0504856Z   Downloading narwhals-2.24.0-py3-none-any.whl.metadata (15 kB)
2026-08-01T18:03:09.2738835Z Collecting packaging (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-01T18:03:09.2856591Z   Downloading packaging-26.2-py3-none-any.whl.metadata (3.5 kB)
2026-08-01T18:03:09.3783668Z Collecting annotated-types>=0.6.0 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-01T18:03:09.3887274Z   Downloading annotated_types-0.8.0-py3-none-any.whl.metadata (15 kB)
2026-08-01T18:03:10.3225591Z Collecting pydantic-core==2.46.4 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-01T18:03:10.3334907Z   Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB)
2026-08-01T18:03:10.3653347Z Collecting iniconfig>=1.0.1 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-01T18:03:10.3752613Z   Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:10.3951118Z Collecting pluggy<2,>=1.5 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-01T18:03:10.4103477Z   Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)
2026-08-01T18:03:10.4415313Z Collecting pygments>=2.7.2 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-01T18:03:10.4514721Z   Downloading pygments-2.20.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:10.5605732Z Collecting altair!=5.4.0,!=5.4.1,<7,>=4.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.5961860Z   Downloading altair-6.2.2-py3-none-any.whl.metadata (11 kB)
2026-08-01T18:03:10.6173995Z Collecting blinker<2,>=1.5.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.6281311Z   Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)
2026-08-01T18:03:10.8389801Z Collecting cachetools<8,>=5.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.8493440Z   Downloading cachetools-7.1.6-py3-none-any.whl.metadata (5.5 kB)
2026-08-01T18:03:10.8720707Z Collecting click<9,>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.8822791Z   Downloading click-8.4.2-py3-none-any.whl.metadata (2.6 kB)
2026-08-01T18:03:10.9159102Z Collecting gitpython!=3.1.19,<4,>=3.0.7 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.9263476Z   Downloading gitpython-3.1.57-py3-none-any.whl.metadata (13 kB)
2026-08-01T18:03:11.0759324Z Collecting pillow<13,>=7.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.0865767Z   Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.1 kB)
2026-08-01T18:03:11.2630037Z Collecting pydeck<1,>=0.8.0b4 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.2810852Z   Downloading pydeck-0.9.3-py2.py3-none-any.whl.metadata (4.2 kB)
2026-08-01T18:03:11.5016095Z Collecting protobuf<8,>=3.20 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.5120791Z   Downloading protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl.metadata (595 bytes)
2026-08-01T18:03:11.5899951Z Collecting pyarrow>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.6007010Z   Downloading pyarrow-25.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (3.0 kB)
2026-08-01T18:03:11.6554458Z Collecting requests<3,>=2.27 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.6661355Z   Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
2026-08-01T18:03:11.8561228Z Collecting tenacity<10,>=8.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.8667709Z   Downloading tenacity-9.1.4-py3-none-any.whl.metadata (1.2 kB)
2026-08-01T18:03:11.9010645Z Collecting toml<2,>=0.10.1 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.9118187Z   Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
2026-08-01T18:03:11.9475771Z Collecting httptools>=0.6.3 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:11.9580358Z   Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (3.5 kB)
2026-08-01T18:03:12.0421445Z Collecting python-multipart>=0.0.10 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:12.0534844Z   Downloading python_multipart-0.0.32-py3-none-any.whl.metadata (2.1 kB)
2026-08-01T18:03:12.1378072Z Collecting websockets>=12.0.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:12.1484661Z   Downloading websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.3 kB)
2026-08-01T18:03:12.1717904Z Collecting itsdangerous>=2.1.2 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:12.1820008Z   Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
2026-08-01T18:03:12.4267661Z Collecting watchdog<7,>=2.1.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:12.4374990Z   Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata (44 kB)
2026-08-01T18:03:12.4632547Z Collecting h11>=0.8 (from uvicorn==0.47.0->-r requirements-ci.txt (line 12))
2026-08-01T18:03:12.4763179Z   Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
2026-08-01T18:03:12.5248195Z Collecting multitasking>=0.0.7 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:12.5352210Z   Downloading multitasking-0.0.13-py3-none-any.whl.metadata (16 kB)
2026-08-01T18:03:12.6855736Z Collecting platformdirs>=2.0.0 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:12.6982137Z   Downloading platformdirs-4.11.0-py3-none-any.whl.metadata (5.5 kB)
2026-08-01T18:03:12.7429075Z Collecting pytz>=2022.5 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:12.7534909Z   Downloading pytz-2026.3.post1-py2.py3-none-any.whl.metadata (22 kB)
2026-08-01T18:03:12.8020051Z Collecting frozendict>=2.3.4 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:12.8144833Z   Downloading frozendict-2.4.7-py3-none-any.whl.metadata (23 kB)
2026-08-01T18:03:12.8484564Z Collecting peewee>=3.16.2 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:12.8586760Z   Downloading peewee-4.3.0-py3-none-any.whl.metadata (10 kB)
2026-08-01T18:03:12.9448591Z Collecting beautifulsoup4>=4.11.1 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:12.9553998Z   Downloading beautifulsoup4-4.15.0-py3-none-any.whl.metadata (3.8 kB)
2026-08-01T18:03:13.0286444Z Collecting curl_cffi>=0.15 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:13.0395819Z   Downloading curl_cffi-0.16.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (17 kB)
2026-08-01T18:03:13.0939126Z Collecting jsonschema>=3.0 (from altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.1042975Z   Downloading jsonschema-4.26.0-py3-none-any.whl.metadata (7.6 kB)
2026-08-01T18:03:13.1725424Z Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.1827879Z   Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
2026-08-01T18:03:13.2021299Z Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.2127315Z   Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)
2026-08-01T18:03:13.3035677Z Collecting charset_normalizer<4,>=2 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.3142634Z   Downloading charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (41 kB)
2026-08-01T18:03:13.3503125Z Collecting urllib3<3,>=1.26 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.3606945Z   Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
2026-08-01T18:03:13.4365322Z Collecting soupsieve>=1.6.1 (from beautifulsoup4>=4.11.1->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:13.4469395Z   Downloading soupsieve-2.9.1-py3-none-any.whl.metadata (4.6 kB)
2026-08-01T18:03:13.5328824Z Collecting cffi>=2.0.0 (from curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:13.5432401Z   Downloading cffi-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)
2026-08-01T18:03:13.5636359Z Collecting pycparser (from cffi>=2.0.0->curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:13.5727645Z   Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
2026-08-01T18:03:13.6896534Z Collecting attrs>=22.2.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.6990514Z   Downloading attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB)
2026-08-01T18:03:13.7186129Z Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.7292205Z   Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl.metadata (2.9 kB)
2026-08-01T18:03:13.7520863Z Collecting referencing>=0.28.4 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.7627424Z   Downloading referencing-0.37.0-py3-none-any.whl.metadata (2.8 kB)
2026-08-01T18:03:13.9678229Z Collecting rpds-py>=0.25.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:13.9785215Z   Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
2026-08-01T18:03:14.0048438Z Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-01T18:03:14.0147697Z   Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
2026-08-01T18:03:14.0383745Z Downloading fastapi-0.136.1-py3-none-any.whl (117 kB)
2026-08-01T18:03:14.0640856Z Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
2026-08-01T18:03:14.1525064Z Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
2026-08-01T18:03:14.1772870Z Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
2026-08-01T18:03:14.2119320Z Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (11.3 MB)
2026-08-01T18:03:14.6918546Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 24.4 MB/s  0:00:00
2026-08-01T18:03:14.7046010Z Downloading plotly-6.7.0-py3-none-any.whl (9.9 MB)
2026-08-01T18:03:14.9123493Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.9/9.9 MB 46.9 MB/s  0:00:00
2026-08-01T18:03:14.9233934Z Downloading pydantic-2.13.4-py3-none-any.whl (472 kB)
2026-08-01T18:03:14.9384046Z Downloading pypdf-6.14.2-py3-none-any.whl (349 kB)
2026-08-01T18:03:14.9525629Z Downloading pytest-9.0.2-py3-none-any.whl (374 kB)
2026-08-01T18:03:14.9707988Z Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.4 MB)
2026-08-01T18:03:15.1626529Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 59.2 MB/s  0:00:00
2026-08-01T18:03:15.1739180Z Downloading streamlit-1.57.0-py3-none-any.whl (9.2 MB)
2026-08-01T18:03:15.3163479Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.2/9.2 MB 66.7 MB/s  0:00:00
2026-08-01T18:03:15.3263422Z Downloading uvicorn-0.47.0-py3-none-any.whl (71 kB)
2026-08-01T18:03:15.3642445Z Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB)
2026-08-01T18:03:15.4268105Z Downloading yfinance-1.3.0-py2.py3-none-any.whl (133 kB)
2026-08-01T18:03:15.4736759Z Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
2026-08-01T18:03:15.5031269Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 68.8 MB/s  0:00:00
2026-08-01T18:03:15.5138472Z Downloading altair-6.2.2-py3-none-any.whl (797 kB)
2026-08-01T18:03:15.5205664Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 797.6/797.6 kB 154.7 MB/s  0:00:00
2026-08-01T18:03:15.5306821Z Downloading blinker-1.9.0-py3-none-any.whl (8.5 kB)
2026-08-01T18:03:15.5433176Z Downloading cachetools-7.1.6-py3-none-any.whl (16 kB)
2026-08-01T18:03:15.5558652Z Downloading click-8.4.2-py3-none-any.whl (119 kB)
2026-08-01T18:03:15.5835343Z Downloading gitpython-3.1.57-py3-none-any.whl (217 kB)
2026-08-01T18:03:15.6021207Z Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
2026-08-01T18:03:15.6146955Z Downloading httpcore-1.0.9-py3-none-any.whl (78 kB)
2026-08-01T18:03:15.6274477Z Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.9 MB)
2026-08-01T18:03:15.8664821Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.9/16.9 MB 71.0 MB/s  0:00:00
2026-08-01T18:03:15.8760390Z Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.9 MB)
2026-08-01T18:03:15.9850309Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.9/6.9 MB 62.8 MB/s  0:00:00
2026-08-01T18:03:15.9957796Z Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)
2026-08-01T18:03:16.0206711Z Downloading protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl (327 kB)
2026-08-01T18:03:16.0388659Z Downloading pydeck-0.9.3-py2.py3-none-any.whl (11.4 MB)
2026-08-01T18:03:16.2241538Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 61.4 MB/s  0:00:00
2026-08-01T18:03:16.2351058Z Downloading requests-2.34.2-py3-none-any.whl (73 kB)
2026-08-01T18:03:16.2493541Z Downloading charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (221 kB)
2026-08-01T18:03:16.2732729Z Downloading idna-3.18-py3-none-any.whl (65 kB)
2026-08-01T18:03:16.2864445Z Downloading smmap-5.0.3-py3-none-any.whl (24 kB)
2026-08-01T18:03:16.2991546Z Downloading tenacity-9.1.4-py3-none-any.whl (28 kB)
2026-08-01T18:03:16.4455648Z Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
2026-08-01T18:03:16.4585505Z Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)
2026-08-01T18:03:16.4712692Z Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
2026-08-01T18:03:16.4841828Z Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl (79 kB)
2026-08-01T18:03:16.5000700Z Downloading annotated_doc-0.0.5-py3-none-any.whl (5.3 kB)
2026-08-01T18:03:16.5137864Z Downloading annotated_types-0.8.0-py3-none-any.whl (13 kB)
2026-08-01T18:03:16.5387940Z Downloading anyio-4.14.2-py3-none-any.whl (125 kB)
2026-08-01T18:03:16.5523948Z Downloading beautifulsoup4-4.15.0-py3-none-any.whl (109 kB)
2026-08-01T18:03:16.5781493Z Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)
2026-08-01T18:03:16.5910502Z Downloading curl_cffi-0.16.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (13.5 MB)
2026-08-01T18:03:16.7584055Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.5/13.5 MB 80.3 MB/s  0:00:00
2026-08-01T18:03:16.7692173Z Downloading cffi-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB)
2026-08-01T18:03:16.7839618Z Downloading frozendict-2.4.7-py3-none-any.whl (16 kB)
2026-08-01T18:03:16.7962618Z Downloading h11-0.16.0-py3-none-any.whl (37 kB)
2026-08-01T18:03:16.8090736Z Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (464 kB)
2026-08-01T18:03:16.8231562Z Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)
2026-08-01T18:03:16.8361207Z Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)
2026-08-01T18:03:16.8509759Z Downloading jsonschema-4.26.0-py3-none-any.whl (90 kB)
2026-08-01T18:03:16.8656350Z Downloading attrs-26.1.0-py3-none-any.whl (67 kB)
2026-08-01T18:03:16.8971535Z Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB)
2026-08-01T18:03:16.9099215Z Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
2026-08-01T18:03:16.9229392Z Downloading multitasking-0.0.13-py3-none-any.whl (16 kB)
2026-08-01T18:03:16.9388305Z Downloading narwhals-2.24.0-py3-none-any.whl (461 kB)
2026-08-01T18:03:16.9521113Z Downloading packaging-26.2-py3-none-any.whl (100 kB)
2026-08-01T18:03:16.9648853Z Downloading peewee-4.3.0-py3-none-any.whl (179 kB)
2026-08-01T18:03:16.9901894Z Downloading platformdirs-4.11.0-py3-none-any.whl (23 kB)
2026-08-01T18:03:17.0044585Z Downloading pyarrow-25.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (50.1 MB)
2026-08-01T18:03:17.5959625Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.1/50.1 MB 84.6 MB/s  0:00:00
2026-08-01T18:03:17.6069349Z Downloading pygments-2.20.0-py3-none-any.whl (1.2 MB)
2026-08-01T18:03:17.6447655Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 28.7 MB/s  0:00:00
2026-08-01T18:03:17.6548851Z Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2026-08-01T18:03:17.6681424Z Downloading python_multipart-0.0.32-py3-none-any.whl (30 kB)
2026-08-01T18:03:17.6805699Z Downloading pytz-2026.3.post1-py2.py3-none-any.whl (508 kB)
2026-08-01T18:03:17.6944483Z Downloading referencing-0.37.0-py3-none-any.whl (26 kB)
2026-08-01T18:03:17.7068986Z Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (371 kB)
2026-08-01T18:03:17.7207208Z Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
2026-08-01T18:03:17.7330741Z Downloading soupsieve-2.9.1-py3-none-any.whl (37 kB)
2026-08-01T18:03:17.7466230Z Downloading starlette-1.3.1-py3-none-any.whl (73 kB)
2026-08-01T18:03:17.7592483Z Downloading typing_inspection-0.4.2-py3-none-any.whl (14 kB)
2026-08-01T18:03:17.7721996Z Downloading websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (219 kB)
2026-08-01T18:03:17.7853094Z Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
2026-08-01T18:03:17.7997828Z Downloading pycparser-3.0-py3-none-any.whl (48 kB)
2026-08-01T18:03:18.0303608Z Building wheels for collected packages: jarvis-finance
2026-08-01T18:03:18.0311210Z   Building editable for jarvis-finance (pyproject.toml): started
2026-08-01T18:03:18.2150998Z   Building editable for jarvis-finance (pyproject.toml): finished with status 'done'
2026-08-01T18:03:18.2155865Z   Created wheel for jarvis-finance: filename=jarvis_finance-0.1.0-0.editable-py3-none-any.whl size=1509 sha256=af24a77617575659c63dfa239682074a5adc03772edd82316dcfac0ebfadbeb3
2026-08-01T18:03:18.2158112Z   Stored in directory: /tmp/pip-ephem-wheel-cache-xo09cr85/wheels/ad/81/a6/5383a3c32505f4e59976cc011a336e07c6284dcaf35f5a7ea5
2026-08-01T18:03:18.2170945Z Successfully built jarvis-finance
2026-08-01T18:03:18.3362976Z Installing collected packages: pytz, multitasking, xlrd, websockets, watchdog, urllib3, typing-extensions, toml, tenacity, soupsieve, smmap, six, ruff, rpds-py, python-multipart, pypdf, pygments, pycparser, pyarrow, protobuf, pluggy, platformdirs, pillow, peewee, packaging, numpy, narwhals, MarkupSafe, itsdangerous, iniconfig, idna, httptools, h11, frozendict, et-xmlfile, click, charset_normalizer, certifi, cachetools, blinker, attrs, annotated-types, annotated-doc, uvicorn, typing-inspection, requests, referencing, python-dateutil, pytest, pydantic-core, plotly, openpyxl, Jinja2, httpcore, gitdb, cffi, beautifulsoup4, anyio, starlette, pydeck, pydantic, pandas, jsonschema-specifications, jarvis-finance, httpx, gitpython, curl_cffi, yfinance, jsonschema, fastapi, altair, streamlit
2026-08-01T18:03:36.1435388Z 
2026-08-01T18:03:36.1471082Z Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 altair-6.2.2 annotated-doc-0.0.5 annotated-types-0.8.0 anyio-4.14.2 attrs-26.1.0 beautifulsoup4-4.15.0 blinker-1.9.0 cachetools-7.1.6 certifi-2026.7.22 cffi-2.1.0 charset_normalizer-3.4.9 click-8.4.2 curl_cffi-0.16.0 et-xmlfile-2.0.0 fastapi-0.136.1 frozendict-2.4.7 gitdb-4.0.12 gitpython-3.1.57 h11-0.16.0 httpcore-1.0.9 httptools-0.8.0 httpx-0.28.1 idna-3.18 iniconfig-2.3.0 itsdangerous-2.2.0 jarvis-finance-0.1.0 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 multitasking-0.0.13 narwhals-2.24.0 numpy-2.4.6 openpyxl-3.1.5 packaging-26.2 pandas-3.0.3 peewee-4.3.0 pillow-12.3.0 platformdirs-4.11.0 plotly-6.7.0 pluggy-1.6.0 protobuf-7.35.1 pyarrow-25.0.0 pycparser-3.0 pydantic-2.13.4 pydantic-core-2.46.4 pydeck-0.9.3 pygments-2.20.0 pypdf-6.14.2 pytest-9.0.2 python-dateutil-2.9.0.post0 python-multipart-0.0.32 pytz-2026.3.post1 referencing-0.37.0 requests-2.34.2 rpds-py-2026.6.3 ruff-0.15.13 six-1.17.0 smmap-5.0.3 soupsieve-2.9.1 starlette-1.3.1 streamlit-1.57.0 tenacity-9.1.4 toml-0.10.2 typing-extensions-4.16.0 typing-inspection-0.4.2 urllib3-2.7.0 uvicorn-0.47.0 watchdog-6.0.0 websockets-17.0.1 xlrd-2.0.2 yfinance-1.3.0
2026-08-01T18:03:36.1479512Z 
2026-08-01T18:03:36.1480303Z [notice] A new release of pip is available: 26.1.2 -> 26.2
2026-08-01T18:03:36.1481201Z [notice] To update, run: pip install --upgrade pip
2026-08-01T18:03:36.3299279Z ##[group]Run set -euo pipefail
2026-08-01T18:03:36.3299720Z [36;1mset -euo pipefail[0m
2026-08-01T18:03:36.3300091Z [36;1mmkdir -p /tmp/financemanager-phase3-backend/runtime[0m
2026-08-01T18:03:36.3300675Z [36;1mpython -m pytest tests -q | tee /tmp/financemanager-phase3-backend/pytest.log[0m
2026-08-01T18:03:36.3301391Z [36;1mpassed_count=$(sed -nE 's/.*(^|[^0-9])([0-9]+) passed.*/\2/p' /tmp/financemanager-phase3-backend/pytest.log | tail -n 1)[0m
2026-08-01T18:03:36.3301954Z [36;1mtest -n "${passed_count}"[0m
2026-08-01T18:03:36.3302316Z [36;1mtest "${passed_count}" -ge 667[0m
2026-08-01T18:03:36.3332779Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-08-01T18:03:36.3333215Z env:
2026-08-01T18:03:36.3333515Z   PYTHONPATH: src
2026-08-01T18:03:36.3333834Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:36.3334667Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-01T18:03:36.3335387Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-01T18:03:36.3335840Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:36.3336262Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:36.3336735Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:36.3337207Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:36.3337700Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:36.3338128Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:36.3338689Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:36.3339085Z ##[endgroup]
2026-08-01T18:03:57.0586693Z ......................................................................F. [  8%]
2026-08-01T18:04:10.2353695Z ........................................................................ [ 16%]
2026-08-01T18:04:22.9026505Z ........................................................................ [ 24%]
2026-08-01T18:04:48.2348833Z ........................................................................ [ 32%]
2026-08-01T18:05:04.5505942Z ........................................................................ [ 41%]
2026-08-01T18:05:15.7021252Z .........................F.............................................. [ 49%]
2026-08-01T18:05:27.5047892Z ........................................................................ [ 57%]
2026-08-01T18:05:45.8786710Z ........................................................................ [ 65%]
2026-08-01T18:06:00.7513932Z ........................................................................ [ 73%]
2026-08-01T18:06:25.6511437Z ........................................................................ [ 82%]
2026-08-01T18:06:49.0321735Z ........................................................................ [ 90%]
2026-08-01T18:07:03.6033558Z ........................................................................ [ 98%]
2026-08-01T18:07:08.4445766Z ............                                                             [100%]
2026-08-01T18:07:08.4447307Z =================================== FAILURES ===================================
2026-08-01T18:07:08.4448308Z _ test_changed_analytics_and_category_contracts_expose_partial_financial_data __
2026-08-01T18:07:08.4449086Z 
2026-08-01T18:07:08.4449522Z budget_reference_date = ReferenceDate(2026, 5, 31)
2026-08-01T18:07:08.4450149Z 
2026-08-01T18:07:08.4450748Z     def test_changed_analytics_and_category_contracts_expose_partial_financial_data(
2026-08-01T18:07:08.4452095Z         budget_reference_date,
2026-08-01T18:07:08.4452862Z     ) -> None:
2026-08-01T18:07:08.4453458Z         conn = db()
2026-08-01T18:07:08.4454328Z         account, food, _, _ = seed_budget(conn)
2026-08-01T18:07:08.4455185Z         confirm_budget_transaction(conn, {
2026-08-01T18:07:08.4455982Z             "account_id": account,
2026-08-01T18:07:08.4456774Z             "transaction_type": "expense",
2026-08-01T18:07:08.4457981Z             "transaction_date": "2026-05-20",
2026-08-01T18:07:08.4458842Z             "description": "Synthetic missing FX",
2026-08-01T18:07:08.4459661Z             "amount_original": "50.00",
2026-08-01T18:07:08.4460368Z             "currency_original": "EUR",
2026-08-01T18:07:08.4461147Z             "category_id": food,
2026-08-01T18:07:08.4461808Z         })
2026-08-01T18:07:08.4462366Z     
2026-08-01T18:07:08.4463151Z         cockpit = get_budget_dashboard_cockpit(conn, month="2026-05")
2026-08-01T18:07:08.4464245Z         assert cockpit["data_status"] == "partial"
2026-08-01T18:07:08.4465306Z         assert cockpit["unavailable_chf_count"] == 1
2026-08-01T18:07:08.4466330Z         assert cockpit["warnings"][0]["code"] == "missing_chf_conversion"
2026-08-01T18:07:08.4467260Z     
2026-08-01T18:07:08.4468017Z         analysis = get_budget_vs_actual_analysis(conn, year="2026")
2026-08-01T18:07:08.4468946Z         assert analysis["data_status"] == "partial"
2026-08-01T18:07:08.4469836Z         assert analysis["unavailable_chf_count"] == 1
2026-08-01T18:07:08.4470806Z         assert analysis["warnings"][0]["code"] == "missing_chf_conversion"
2026-08-01T18:07:08.4471791Z         assert analysis["totals"]["data_status"] == "partial"
2026-08-01T18:07:08.4472709Z     
2026-08-01T18:07:08.4473363Z         categories = get_category_summary(conn, "2026-05")
2026-08-01T18:07:08.4474358Z         assert categories["categories"] == []
2026-08-01T18:07:08.4475213Z         assert categories["data_status"] == "partial"
2026-08-01T18:07:08.4476089Z         assert categories["unavailable_chf_count"] == 1
2026-08-01T18:07:08.4477414Z         assert categories["warnings"][0]["code"] == "missing_chf_conversion"
2026-08-01T18:07:08.4478349Z     
2026-08-01T18:07:08.4479356Z         status_row = next(row for row in get_budget_status_by_category(conn, year="2026") if row["category_id"] == food)
2026-08-01T18:07:08.4480770Z         assert status_row["actual_current_month"] == "0.00"
2026-08-01T18:07:08.4481686Z         assert status_row["actual_year_to_date"] == "0.00"
2026-08-01T18:07:08.4482644Z >       assert status_row["forecast_year"] == "0.00"
2026-08-01T18:07:08.4483467Z E       AssertionError: assert '100.00' == '0.00'
2026-08-01T18:07:08.4484402Z E         
2026-08-01T18:07:08.4485059Z E         - 0.00
2026-08-01T18:07:08.4485641Z E         + 100.00
2026-08-01T18:07:08.4486279Z E         ? ++
2026-08-01T18:07:08.4486657Z 
2026-08-01T18:07:08.4487218Z tests/unit/test_budget_analytics_dashboard_v2.py:164: AssertionError
2026-08-01T18:07:08.4488455Z _____ test_integrations_dashboard_budgetplanning_and_data_explorer_fields ______
2026-08-01T18:07:08.4489345Z 
2026-08-01T18:07:08.4489995Z     def test_integrations_dashboard_budgetplanning_and_data_explorer_fields() -> None:
2026-08-01T18:07:08.4491191Z         conn = db(); account, media, _food, _insurance = setup(conn)
2026-08-01T18:07:08.4493317Z         preview = preview_manual_recurring_payment(conn, {"name": "Netflix", "category_id": media, "expected_amount_text": "20.00", "frequency": "monthly", "recurring_type": "subscription", "expected_day_of_month": 5})
2026-08-01T18:07:08.4495566Z         confirm_manual_recurring_payment(conn, preview["payload"])
2026-08-01T18:07:08.4496581Z         tx(conn, account, media, "Netflix", "20.00", "2026-02-05")
2026-08-01T18:07:08.4497480Z     
2026-08-01T18:07:08.4498104Z         dash = get_recurring_dashboard(conn, today="2026-03-01")
2026-08-01T18:07:08.4498995Z         assert dash["analytics"]["fixed_cost_quote_percent"] is not None
2026-08-01T18:07:08.4499860Z         assert dash["analytics"]["subscriptions_year_chf"] == "240.00"
2026-08-01T18:07:08.4500675Z         assert dash["kpis"]["monthly_fixed_costs_chf"] == "20.00"
2026-08-01T18:07:08.4501487Z         assert dash["kpis"]["annual_fixed_costs_chf"] == "240.00"
2026-08-01T18:07:08.4502229Z         assert dash["kpis"]["active_recurring_count"] == 1
2026-08-01T18:07:08.4502977Z         assert dash["kpis"]["open_candidate_count"] == 0
2026-08-01T18:07:08.4504042Z         assert dash["kpis"]["largest_fixed_costs"][0]["name"] == "Netflix"
2026-08-01T18:07:08.4505191Z         assert dash["category_breakdown"][0]["known_recurring_month_chf"] == "20.00"
2026-08-01T18:07:08.4506211Z     
2026-08-01T18:07:08.4506975Z         from jarvis_finance.services.budget_planning import get_budget_planning_matrix
2026-08-01T18:07:08.4508172Z         row = next(r for r in get_budget_planning_matrix(conn, year="2026", current_month="2026-02")["rows"] if r["category_id"] == media)
2026-08-01T18:07:08.4509334Z >       assert row["known_recurring_month_chf"] == "20.00"
2026-08-01T18:07:08.4509989Z E       AssertionError: assert '0.00' == '20.00'
2026-08-01T18:07:08.4510613Z E         
2026-08-01T18:07:08.4511091Z E         - 20.00
2026-08-01T18:07:08.4511624Z E         ? -
2026-08-01T18:07:08.4512123Z E         + 0.00
2026-08-01T18:07:08.4512477Z 
2026-08-01T18:07:08.4512883Z tests/unit/test_fixed_costs_subscriptions_v1.py:246: AssertionError
2026-08-01T18:07:08.4513737Z =============================== warnings summary ===============================
2026-08-01T18:07:08.4514989Z ../../../../../opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages/fastapi/testclient.py:1
2026-08-01T18:07:08.4516776Z   /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
2026-08-01T18:07:08.4518366Z     from starlette.testclient import TestClient as TestClient  # noqa
2026-08-01T18:07:08.4518971Z 
2026-08-01T18:07:08.4519430Z -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
2026-08-01T18:07:08.4520456Z =========================== short test summary info ============================
2026-08-01T18:07:08.4521945Z FAILED tests/unit/test_budget_analytics_dashboard_v2.py::test_changed_analytics_and_category_contracts_expose_partial_financial_data - AssertionError: assert '100.00' == '0.00'
2026-08-01T18:07:08.4523212Z   
2026-08-01T18:07:08.4523707Z   - 0.00
2026-08-01T18:07:08.4524457Z   + 100.00
2026-08-01T18:07:08.4524964Z   ? ++
2026-08-01T18:07:08.4526234Z FAILED tests/unit/test_fixed_costs_subscriptions_v1.py::test_integrations_dashboard_budgetplanning_and_data_explorer_fields - AssertionError: assert '0.00' == '20.00'
2026-08-01T18:07:08.4527451Z   
2026-08-01T18:07:08.4527928Z   - 20.00
2026-08-01T18:07:08.4528422Z   ? -
2026-08-01T18:07:08.4528902Z   + 0.00
2026-08-01T18:07:08.4529532Z 2 failed, 874 passed, 1 warning in 211.12s (0:03:31)
2026-08-01T18:07:08.6437277Z ##[error]Process completed with exit code 1.
2026-08-01T18:07:08.6579653Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:07:08.6580970Z Post job cleanup.
2026-08-01T18:07:08.7466049Z [command]/usr/bin/git version
2026-08-01T18:07:08.7540610Z git version 2.54.0
2026-08-01T18:07:08.7605468Z Temporarily overriding HOME='/home/runner/work/_temp/1884ab7b-646d-4c5b-9605-7a2b79e3eaf3' before making global git config changes
2026-08-01T18:07:08.7606751Z Adding repository directory to the temporary git global config as a safe directory
2026-08-01T18:07:08.7607948Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:07:08.7656698Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-01T18:07:08.7712380Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-01T18:07:08.8055267Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-01T18:07:08.8077104Z http.https://github.com/.extraheader
2026-08-01T18:07:08.8079254Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-08-01T18:07:08.8118951Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-01T18:07:08.8506455Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-01T18:07:08.8574721Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-01T18:07:08.9023559Z Cleaning up orphan processes
2026-08-01T18:07:08.9248698Z ##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
